# 公司：安徽银杰
# 作者：李伟
"""
1、先把前置sql语句写在excel表格里： json格式 ，key 【变量名】： value 【sql语句】
2、读取出来，是字符串，做反序列化操作，转化为字典；
3、读取这个前置sql，for循环k v 得到这个变量和sql语句，sql去数据库里查，调用我们之前封装的sql的类方法，得到的结果是个字典。
4、查完后结果存储在环境变量作为属性。属性名就是k 变量名；
5、请求参数里的mobilecode就可以从环境变量里获取这个结果数据了。-- 调用之前的替换函数。【所以，参数里变化的数据需要占位符占位，方便查找替换】

"""

import json
from tools.handle_mysql import HandleMysql
from data.my_db import my_db
from data.envi_data import EnviData
from tools.handle_logs import logger

# 第一步：从excel读取出来的pre_sql表达式

sql_data = """{"mobile_code":
"select mobile_code  from tz_sms_log where user_phone='13100009999' order by rec_date desc limit 1;"}"""

# 第二步反序列化，转化为字典
sql_data = json.loads(sql_data)
# logger.info(f"转换数据{sql_data}")

# 第三步：for循环k v 得到这个变量和sql语句。
for k, v in sql_data.items():  # k是变量名mobile_code v是sql语句。
    # 第四步:sql去数据库里查，调用我们之前封装的sql方法，得到数据查询结果。
    # logger.info(f"k:{k}")
    # logger.info(f"v:{v}")
    sql_result = HandleMysql(**my_db).quey_data(v)  # 调用数据封装类的实例方法 结果 字典{'mobile_code': '146584'}
    # logger.info(f"实际查询结果：{sql_result}")
    # 对sql_result为空判断
    if sql_result is None:
        logger.info("sql查询为空 无法进行后续遍历")

    else:
        # 第五步：查完后结果存储在环境变量中作为属性。属性名是K  变量名：
        for i, j in sql_result.items():
            # i  mobile_code属性名 j 402864 是属性值
            setattr(EnviData, i, j)
print(EnviData.__dict__)
